"""
https://leetcode.cn/problems/remove-duplicates-from-sorted-list/description/

83. 删除排序链表中的重复元素
已解答
简单
相关标签
premium lock icon
相关企业
给定一个已排序的链表的头 head ， 删除所有重复的元素，使每个元素只出现一次 。返回 已排序的链表 。

 

示例 1：


输入：head = [1,1,2]
输出：[1,2]
示例 2：


输入：head = [1,1,2,3,3]
输出：[1,2,3]
 

提示：

链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序 排列
"""

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
from typing import Optional
from list_node import ListNode,create_list_node,calc_arr


class Solution:
    def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
        if not head:
            return None
        cur_node=head
        # cur_num=head.val
        while cur_node.next:
            if cur_node.val==cur_node.next.val:
                cur_node.next=cur_node.next.next
            else:
                cur_node=cur_node.next
                # cur_num=cur_node.val
        
        return head
    
if __name__=='__main__':
    nums=[1,1,2,3,3]
    head=create_list_node(nums)
    
    sol=Solution()
    head=sol.deleteDuplicates(head)
    arr=calc_arr(head)
    print(arr)